#include "BlackDeath.Core.h"

namespace BlackDeath
{
	namespace Core
	{
		class CGame;
		class CGameTime;
		class CGameComponentManager;

		class CGameComponent
		{
			private:
				#pragma region Variables
					BlackDeath::Core::CGame* m_pGame;
					bool m_bEnabled;
				#pragma endregion

				#pragma region Options
					void InternalUpdate(BlackDeath::Core::CGameTime*);
				#pragma endregion

				protected:
				#pragma region Constructor and Destructor
					CGameComponent(BlackDeath::Core::CGame*);
					virtual ~CGameComponent();
				#pragma endregion

				#pragma region More_Options
					BlackDeath::Core::CGame* Get_Game();
				#pragma endregion

			public:
				#pragma region Properties
					virtual bool Get_Enabled();
					virtual void Set_Enabled(bool);
					BlackDeath::Graphics::CGraphicsDevice* Get_GraphicsDevice();
				#pragma endregion

				#pragma region Methods
					virtual void Initialize();
					virtual void Update(BlackDeath::Core::CGameTime*);
				#pragma endregion

				friend class BlackDeath::Core::CGameComponentManager;
		};
	}
}